Add repos.yaml body map + repos_sync generator/drift-check#36
Merged
Conversation
repos.yaml is the single source of repo IDENTITY (GitHub home, category, one-line role) for every repo in the workspace. Per-organ POLICY stays where it belongs (PyAutoHeart/config/repos.yaml, PyAutoBuild/pre_build.sh). scripts/repos_sync.py --write regenerates the routing table in the workspace-root AGENTS.md and the owner map in PyAutoBrain/skills/WORKFLOW.md between repos_sync markers; --check validates Heart config, pre_build.sh, ensure_workspace_labels.sh and every local checkout's origin remote against the manifest. Replaces four hand-maintained repo lists that had drifted (WORKFLOW.md and the labels script still pointed at pre-org-migration rhayes777/Jammy2211 owners). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 8, 2026
Jammy2211
added a commit
to PyAutoLabs/PyAutoBrain
that referenced
this pull request
Jul 8, 2026
The hand-maintained owner table was stale (rhayes777/Jammy2211 owners from before the PyAutoLabs org migration). The section is now generated between repos_sync markers by PyAutoMind/scripts/repos_sync.py --write, from the repos.yaml body map (PyAutoLabs/PyAutoMind#36). Co-authored-by: Jammy2211 <JNightingale2211@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Jammy2211
added a commit
to PyAutoLabs/PyAutoHeart
that referenced
this pull request
Jul 8, 2026
config/repos.yaml stays Heart policy (what to poll, what gates, noise globs); repo identity (name/owner) is now drift-checked against the PyAutoMind/repos.yaml body map by repos_sync.py --check (PyAutoLabs/PyAutoMind#36). Co-authored-by: Jammy2211 <JNightingale2211@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Jammy2211
added a commit
to PyAutoLabs/PyAutoBuild
that referenced
this pull request
Jul 8, 2026
The run_workspace names are drift-checked against the PyAutoMind/repos.yaml body map (repos_sync.py --check); the per-repo flags remain Build policy and live only here (PyAutoLabs/PyAutoMind#36). Co-authored-by: Jammy2211 <JNightingale2211@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a single-source “body map” (repos.yaml) for workspace repo identity and adds a generator/drift-check script (scripts/repos_sync.py) to keep downstream repo lists and generated doc blocks consistent. It also updates existing workflow docs to point contributors at the manifest as the canonical repo list.
Changes:
- Add
repos.yamlmanifest defining repo GitHub home, category, and role. - Add
scripts/repos_sync.pyto regenerate marked doc blocks and drift-check other repo lists + localoriginremotes. - Update
AGENTS.mdandROUTING.mdto reference the new manifest.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| scripts/repos_sync.py | New generator + drift-checker for manifest-driven repo identity and doc blocks. |
| repos.yaml | New canonical repo identity manifest (categories + repo entries). |
| ROUTING.md | Adds pointer to repos.yaml as canonical repo list. |
| AGENTS.md | Adds “Body map” section describing the manifest + sync script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+8
to
+11
| Usage: | ||
| python3 repos_sync.py [--check] # drift checks only (default) | ||
| python3 repos_sync.py --write # regenerate doc blocks, then check | ||
| python3 repos_sync.py --root <dir> # override the workspace root |
Comment on lines
+210
to
+214
| parser = argparse.ArgumentParser(description=__doc__) | ||
| parser.add_argument("--write", action="store_true") | ||
| parser.add_argument("--check", action="store_true") | ||
| parser.add_argument("--root", type=Path, default=None) | ||
| args = parser.parse_args() |
Comment on lines
+124
to
+125
| if not heart_yaml.exists(): | ||
| return [f"missing {heart_yaml} (skipped)"] if False else [] |
Comment on lines
+86
to
+88
| libraries = [n for n, r in repos.items() if r["category"] == "library"] | ||
| ws_cats = ("workspace", "workspace_test", "howto", "pipeline") | ||
| workspaces = [n for n, r in repos.items() if r["category"] in ws_cats] |
Comment on lines
+158
to
+171
| block = re.search(r"REPOS=\((.*?)\)", script.read_text(), re.DOTALL) | ||
| problems = [] | ||
| for slug in block.group(1).split(): | ||
| owner, _, name = slug.partition("/") | ||
| if name not in repos: | ||
| problems.append( | ||
| f"ensure_workspace_labels targets '{slug}' — '{name}' not in the manifest" | ||
| ) | ||
| elif slug != repos[name]["github"]: | ||
| problems.append( | ||
| f"ensure_workspace_labels targets '{slug}', manifest says " | ||
| f"'{repos[name]['github']}'" | ||
| ) | ||
| return problems |
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
repos.yaml— the organism's body map: single source of repo identity (GitHub home, category, one-line role) for all 26 workspace repos. Per-organ policy stays with the organ (Heart's gating/noise config, Build's pre_build flags).scripts/repos_sync.py—--writeregenerates the routing table in the workspace-rootAGENTS.mdand the owner map inPyAutoBrain/skills/WORKFLOW.md(betweenrepos_syncmarkers);--checkvalidates Heart'sconfig/repos.yaml,pre_build.sh,ensure_workspace_labels.sh, and every local checkout'soriginremote against the manifest. Exit 1 on drift.AGENTS.md/ROUTING.md— one-line pointers to the manifest.Why
Four hand-maintained repo lists had drifted:
WORKFLOW.mdstill mapped PyAutoFit torhayes777and the labels script targeted three pre-org-migration owners, while everything now lives underPyAutoLabs(except autofit_workspace_developer, euclid_assistant, admin_jammy). The manifest + origin check makes this class of staleness self-detecting and is the scaling path for the routing table as repo count grows.Companion PRs: PyAutoBrain (generated owner map), PyAutoHeart / PyAutoBuild (identity/policy split comments), admin_jammy (label-script owner fixes).
🤖 Generated with Claude Code